🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / core / ui / src / commonMain / kotlin / org / meshtastic / core / ui / component / EditBase64Preference.kt
Displaying Raw • Download
core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/component/EditBase64Preference.kt 94ceaa64eef1f71431b37a12cca880f4d7a0b335 (94ceaa64) Text, 6.45 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.ui.component
Tff7b72import T7ee787androidx.compose.foundation.layout.Column
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxWidth
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.foundation.text.KeyboardActions
Tff7b72import T7ee787androidx.compose.foundation.text.KeyboardOptions
Tff7b72import T7ee787androidx.compose.material3.Icon
Tff7b72import T7ee787androidx.compose.material3.IconButton
Tff7b72import T7ee787androidx.compose.material3.LocalContentColor
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.material3.OutlinedTextField
Tff7b72import T7ee787androidx.compose.material3.Text
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.LaunchedEffect
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.focus.onFocusChanged
Tff7b72import T7ee787androidx.compose.ui.text.input.ImeAction
Tff7b72import T7ee787androidx.compose.ui.text.input.KeyboardType
Tff7b72import T7ee787androidx.compose.ui.tooling.preview.Preview
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787okio.ByteString
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.meshtastic.core.model.Channel
Tff7b72import T7ee787org.meshtastic.core.model.util.base64ToByteString
Tff7b72import T7ee787org.meshtastic.core.model.util.encodeToString
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.error
Tff7b72import T7ee787org.meshtastic.core.resources.reset
Tff7b72import T7ee787org.meshtastic.core.ui.icon.Close
Tff7b72import T7ee787org.meshtastic.core.ui.icon.MeshtasticIcons
Tff7b72import T7ee787org.meshtastic.core.ui.icon.Refresh
Tff7b72import T7ee787org.meshtastic.core.ui.theme.AppTheme
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongMethodTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCyclomaticComplexMethodTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffMagicNumberTa5d6ff"Tb4b4b4)
Tf0883e@Composable
Tff7b72fun Td2a8ffEditBase64PreferenceTb4b4b4(
Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4,
Te6edf3titleTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3summaryTb4b4b4: Tffa657String? Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3valueTb4b4b4: Te6edf3ByteStringTb4b4b4,
Te6edf3enabledTb4b4b4: Tffa657BooleanTb4b4b4,
Te6edf3readOnlyTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3placeholderTextTb4b4b4: Tffa657String? Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3keyboardActionsTb4b4b4: Te6edf3KeyboardActionsTb4b4b4,
Te6edf3onValueChangeTb4b4b4: Tb4b4b4(Te6edf3ByteStringTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4,
Te6edf3onGenerateKeyTb4b4b4: Tb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4)Tff7b72? Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3trailingIconTb4b4b4: Tb4b4b4(Tf0883e@Composable Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4)Tff7b72? Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3isMismatch Tff7b72= Te6edf3valueTb4b4b4.Te6edf3size Tff7b72=Tff7b72= T79c0ff3T79c0ff2 Tff7b72&Tff7b72& Te6edf3valueTb4b4b4.Te6edf3toByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3all Tb4b4b4{ Tffa657it Tff7b72=Tff7b72= T79c0ff0.Te6edf3toByteTb4b4b4(Tb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3errorString Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3errorTb4b4b4)
Tff7b72var Te6edf3valueState Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72if Tb4b4b4(Te6edf3isMismatchTb4b4b4) Te6edf3errorString Tff7b72else Te6edf3valueTb4b4b4.Te6edf3encodeToStringTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3isError Tff7b72= Te6edf3valueTb4b4b4.Te6edf3encodeToStringTb4b4b4(Tb4b4b4) Tff7b72!Tff7b72= Te6edf3valueState Tff7b72|Tff7b72| Te6edf3isMismatch
T8b949e// don't update values while the user is editing
Tff7b72var Te6edf3isFocused Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Te6edf3LaunchedEffectTb4b4b4(Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isFocusedTb4b4b4) Tb4b4b4{
Te6edf3valueState Tff7b72= Tff7b72if Tb4b4b4(Te6edf3isMismatchTb4b4b4) Te6edf3errorString Tff7b72else Te6edf3valueTb4b4b4.Te6edf3encodeToStringTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72val Tb4b4b4(Te6edf3iconTb4b4b4, Te6edf3descriptionTb4b4b4) Tff7b72=
Tff7b72when Tb4b4b4{
Te6edf3isError Tff7b72-Tff7b72> Te6edf3MeshtasticIconsTb4b4b4.Te6edf3Close Te6edf3to Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3errorTb4b4b4)
Te6edf3onGenerateKey Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3isFocused Tff7b72-Tff7b72> Te6edf3MeshtasticIconsTb4b4b4.Te6edf3Refresh Te6edf3to Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3resetTb4b4b4)
Tff7b72else Tff7b72-Tff7b72> Tff7b72null Te6edf3to Tff7b72null
Tb4b4b4}
Tff7b72val Te6edf3placeholderTb4b4b4: Tf0883e@Composable Tb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4)Tff7b72? Tff7b72= Te6edf3placeholderTextTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3text Tff7b72-Tff7b72> Tb4b4b4{ Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Te6edf3textTb4b4b4) Tb4b4b4} Tb4b4b4}
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3horizontal Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4, Te6edf3vertical Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3OutlinedTextFieldTb4b4b4(
Te6edf3value Tff7b72= Te6edf3valueStateTb4b4b4,
Te6edf3onValueChange Tff7b72= Tb4b4b4{
Te6edf3valueState Tff7b72= Tffa657it
Te6edf3runCatching Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3base64ToByteStringTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4.Te6edf3onSuccessTb4b4b4(Te6edf3onValueChangeTb4b4b4)
Tb4b4b4}Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3onFocusChanged Tb4b4b4{ Te6edf3focusState Tff7b72-Tff7b72> Te6edf3isFocused Tff7b72= Te6edf3focusStateTb4b4b4.Te6edf3isFocused Tb4b4b4}Tb4b4b4,
Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4,
Te6edf3readOnly Tff7b72= Te6edf3readOnlyTb4b4b4,
Te6edf3label Tff7b72= Tb4b4b4{ Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Te6edf3titleTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3placeholder Tff7b72= Te6edf3placeholderTb4b4b4,
Te6edf3isError Tff7b72= Te6edf3isErrorTb4b4b4,
Te6edf3keyboardOptions Tff7b72=
Te6edf3KeyboardOptionsTb4b4b4.Te6edf3DefaultTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3keyboardType Tff7b72= Te6edf3KeyboardTypeTb4b4b4.Te6edf3PasswordTb4b4b4, Te6edf3imeAction Tff7b72= Te6edf3ImeActionTb4b4b4.Te6edf3DoneTb4b4b4)Tb4b4b4,
Te6edf3keyboardActions Tff7b72= Te6edf3keyboardActionsTb4b4b4,
Te6edf3trailingIcon Tff7b72= Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3icon Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3IconButtonTb4b4b4(
Te6edf3onClick Tff7b72= Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isErrorTb4b4b4) Tb4b4b4{
Te6edf3valueState Tff7b72= Te6edf3valueTb4b4b4.Te6edf3encodeToStringTb4b4b4(Tb4b4b4)
Te6edf3onValueChangeTb4b4b4(Te6edf3valueTb4b4b4)
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3onGenerateKey Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3isFocusedTb4b4b4) Tb4b4b4{
Te6edf3onGenerateKeyTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3enabled Tff7b72= Te6edf3enabledTb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(
Te6edf3imageVector Tff7b72= Te6edf3iconTb4b4b4,
Te6edf3contentDescription Tff7b72= Te6edf3descriptionTb4b4b4,
Te6edf3tint Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isErrorTb4b4b4) Tb4b4b4{
Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3error
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3LocalContentColorTb4b4b4.Te6edf3current
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3trailingIcon Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3trailingIconTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3summary Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3summaryTb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3bodySmallTb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceVariantTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3top Tff7b72= T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@PreviewTb4b4b4(Te6edf3showBackground Tff7b72= Tff7b72trueTb4b4b4)
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffEditBase64PreferencePreviewTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3AppTheme Tb4b4b4{
Te6edf3EditBase64PreferenceTb4b4b4(
Te6edf3title Tff7b72= Ta5d6ff"Ta5d6ffTitleTa5d6ff"Tb4b4b4,
Te6edf3summary Tff7b72= Ta5d6ff"Ta5d6ffThis is a summaryTa5d6ff"Tb4b4b4,
Te6edf3value Tff7b72= Te6edf3ChannelTb4b4b4.Te6edf3getRandomKeyTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3enabled Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3keyboardActions Tff7b72= Te6edf3KeyboardActions Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onValueChange Tff7b72= Tb4b4b4{ Te6edf3_ Tff7b72-Tff7b72> Tb4b4b4}Tb4b4b4,
Te6edf3onGenerateKey Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.06s